// 条件实体类：用于处理异步条件检查
class Condition extends Entity {
    // 构造函数：初始化条件检查
    // @param isValid: 条件检查函数
    constructor(isValid) {
        super();
        this.isValid = isValid;
    }

    // 创建Promise对象
    // @returns: Promise，当条件满足时解决，出错时拒绝
    promise() {
        return new Promise((resolve, reject) => {
            this.resolve = resolve;
            this.reject = reject;
        });
    }

    // 更新条件状态
    // @param elapsed: 距离上一帧的时间间隔
    cycle(elapsed) {
        super.cycle(elapsed);

        try {
            // 检查条件是否满足
            if (this.isValid()) {
                this.resolve();  // 条件满足，解决Promise
            } else {
                return;         // 条件不满足，继续等待
            }
        } catch (e) {
            this.reject(e);    // 检查过程出错，拒绝Promise
        }

        // 条件满足或出错后，移除该实体
        this.world.remove(this);
    }
}
